using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("CollectionDeckSlot")]
	public class CollectionDeckSlot : MonoClass
	{
		public int m_index => method_2<int>("m_index");

		public List<int> m_count => method_3<Class270<int>>("m_count")?.method_25();

		public string m_cardId => method_4("m_cardId");

		public bool m_owned => method_2<bool>("m_owned");

		public int Index => method_11<int>("get_Index", Array.Empty<object>());

		public TAG_PREMIUM PreferredPremium => method_11<TAG_PREMIUM>("get_PreferredPremium", Array.Empty<object>());

		public TAG_PREMIUM UnPreferredPremium => method_11<TAG_PREMIUM>("get_UnPreferredPremium", Array.Empty<object>());

		public int Count => method_11<int>("get_Count", Array.Empty<object>());

		public string CardID => method_13("get_CardID");

		public bool Owned => method_11<bool>("get_Owned", Array.Empty<object>());

		public CollectionDeckSlot(IntPtr address, string className)
			: base(address, className)
		{
		}

		public CollectionDeckSlot(IntPtr address)
			: this(address, "CollectionDeckSlot")
		{
		}

		public new string ToString()
		{
			return method_13("ToString");
		}

		public int GetCount(TAG_PREMIUM premium)
		{
			return method_11<int>("GetCount", new object[1] { premium });
		}

		public void SetCount(int count, TAG_PREMIUM premium)
		{
			method_8("SetCount", count, premium);
		}

		public void RemoveCard(int count, TAG_PREMIUM premium)
		{
			method_8("RemoveCard", count, premium);
		}

		public void AddCard(int count, TAG_PREMIUM premium)
		{
			method_8("AddCard", count, premium);
		}

		public void CopyFrom(CollectionDeckSlot otherSlot)
		{
			method_8("CopyFrom", otherSlot);
		}
	}
}
